package com.ruoyi.wxmenu;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.wx.domain.ACat;
import com.ruoyi.wx.domain.ACount;
import com.ruoyi.wx.domain.ANotice;
import com.ruoyi.wx.service.*;
import com.ruoyi.wx.vo.vDataCount;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * author：pan
 * 微信小程序  排行榜
 *
 */

@RestController
@RequestMapping("/wxapi")
public class WxNoticeController {

    @Autowired
    private StringRedisTemplate redisTemplate;

    @Autowired
    private IANoticeService noticeService;

    /**
     * 查询公告
     * @param notice
     * @return
     */
    @GetMapping("/getNotices")
    public AjaxResult getNotices(ANotice notice){
        // Redis的key
        String key = "load:notice:notice";
        // 去Redis缓存中查找
        String moduleListJson = redisTemplate.opsForValue().get(key);

        // 如果缓存中存在
        if(StrUtil.isNotBlank(moduleListJson)){

            //将数据转换
            List<ANotice> noticeList = JSONUtil.toList(moduleListJson, ANotice.class);

            //直接返回数据【已设置 永不过期】
            return AjaxResult.success("缓存:公告查询成功！",noticeList);
        }

        // 如果没有则进数据库去 查找通知
        List<ANotice> notices = noticeService.selectANoticeList(notice);

        // 设置缓存（永久）
        redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(notices));


        return AjaxResult.success("公告查询成功！", notices);
    }

//    /**
//     * 公告热度+1
//     * @param
//     * @return
//     */
//    @GetMapping("/noticeHotAdd")
//    public AjaxResult noticeHotAdd(@RequestParam(name = "id") String id){
//        // 根据id去查询
//        ANotice notice = noticeService.selectANoticeById(Long.valueOf(id));
//
//        // 热度+1
//        Long hot = notice.getHot();
//        notice.setHot(hot+1);
//
//        // 更新热度
//        noticeService.updateANotice(notice);
//
//        return AjaxResult.success("公告热度+1");
//    }


}
